<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>函数-块级函数</title>
</head>
<body>
  
</body>

<script>
  /* 
    1.严格模式 
      严格模式下，块级函数的声明可提升至当前代码块的顶部，在代码块之外是不可见的
  */

  /* 
    "use strict"              
    (function() {
      func("strick");         // 严格模式下 函数只在当前块级作用域内可以调用，外部无法调用
      if(true) {
        func("freedom")
        function func(name) {
          console.log(name)
        }
      } else {
        func("jane")
      }
      func("justify")
    })() 
  */
          
  (function() {
    // func("strick");         // 普通模式下 函数被包裹在if else代码块中 还未被执行，故报错
    if(true) {
      func("freedom")
      function func(name) {
        console.log(name)
      }
    } else {
      func("jane")
    }
    func("justify")             // 普通模式下 func方法 被提升到if else外部作用域中 故可以被调用
  })()
</script>
</html>